Database SQL – EXCEPT Clause
นอกจาก SQL UNION Clause และ SQL INTERSECT Clause สุดท้ายก็คือ SQL EXCEPT Clause ซึ่งเป็นการเอาข้อมูลใน table แรกทั้งหมด ที่ไม่มีอยู่ในข้อมูลของ table สอง ซึ่ง database บางชนิดอาจจะไม่รองรับ SQL EXCEPT เช่น MySQL
รูปแบบ (Syntax)
SELECT column1 [, column2 ]
FROM table1 [, table2 ]
[WHERE condition]
EXCEPT
SELECT column1 [, column2 ]
FROM table1 [, table2 ]
[WHERE condition]
ตัวอย่าง SQL EXCEPT Clause statement
Table 1 – สร้าง CUSTOMERS table
+----+----------+-----+-----------+----------+
| ID | NAME | AGE | ADDRESS | SALARY |
+----+----------+-----+-----------+----------+
| 1 | Ramesh | 32 | Ahmedabad | 2000.00 |
| 2 | Khilan | 25 | Delhi | 1500.00 |
| 3 | kaushik | 23 | Kota | 2000.00 |
| 4 | Chaitali | 25 | Mumbai | 6500.00 |
| 5 | Hardik | 27 | Bhopal | 8500.00 |
| 6 | Komal | 22 | MP | 4500.00 |
| 7 | Muffy | 24 | Indore | 10000.00 |
+----+----------+-----+-----------+----------+
Table 2 – สร้าง ORDERS table
+-----+---------------------+-------------+--------+
|OID | DATE | CUSTOMER_ID | AMOUNT |
+-----+---------------------+-------------+--------+
| 102 | 2009-10-08 00:00:00 | 3 | 3000 |
| 100 | 2009-10-08 00:00:00 | 3 | 1500 |
| 101 | 2009-11-20 00:00:00 | 2 | 1560 |
| 103 | 2008-05-20 00:00:00 | 4 | 2060 |
+-----+---------------------+-------------+--------+
คำสั่ง SQL EXCEPT Clause statement
SQL> SELECT ID, NAME, AMOUNT, DATE
FROM CUSTOMERS
LEFT JOIN ORDERS
ON CUSTOMERS.ID = ORDERS.CUSTOMER_ID
EXCEPT
SELECT ID, NAME, AMOUNT, DATE
FROM CUSTOMERS
RIGHT JOIN ORDERS
ON CUSTOMERS.ID = ORDERS.CUSTOMER_ID;
ผลลัพธ์ที่ได้ของ SQL EXCEPT จาก table CUSTOMERS และ table ORDERS
+----+---------+--------+---------------------+
| ID | NAME | AMOUNT | DATE |
+----+---------+--------+---------------------+
| 1 | Ramesh | NULL | NULL |
| 5 | Hardik | NULL | NULL |
| 6 | Komal | NULL | NULL |
| 7 | Muffy | NULL | NULL |
+----+---------+--------+---------------------+
Reference:
รวมคำสั่ง SQL Command พื้นฐานเบื้องต้น
Author: Suphakit Annoppornchai
Credit: https://saixiii.com, https://www.tutorialspoint.com
SELECT studentID
FROM student
LEFT JOIN checkinout
ON student.studentID = checkinout.studentID
EXCEPT
SELECT studentID
FROM student
RIGHT JOIN checkinout
ON student.studentID = checkinout.studentID;
ผมใช้แบบนี้ ทำไมมันขึ้นที่ SELECT ว่า “this type of clause was previously parsed”